home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Skunkware 5
/
Skunkware 5.iso
/
man
/
cat.1
/
xscreensaver.1
< prev
next >
Wrap
Text File
|
1995-07-25
|
45KB
|
793 lines
XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111)))) XXXX VVVVeeeerrrrssssiiiioooonnnn 11111111 ((((6666----JJJJaaaannnn----99995555)))) XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111))))
NNNNAAAAMMMMEEEE
xscreensaver - graphics hack and screen locker, launched
when the user is idle
SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
xxxxssssccccrrrreeeeeeeennnnssssaaaavvvveeeerrrr [-display _h_o_s_t:_d_i_s_p_l_a_y._s_c_r_e_e_n] [-timeout _i_n_t]
[-cycle _i_n_t] [-nice _i_n_t] [-verbose] [-silent] [-xidle]
[-no-xidle] [-lock] [-no-lock] [-lock-timeout _i_n_t] [-demo]
[-visual _v_i_s_u_a_l] [-install] [-no-install] [-xrm _r_e_s_o_u_r_c_e_s]
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
The _x_s_c_r_e_e_n_s_a_v_e_r program waits until the keyboard and mouse
have been idle for a period, and then runs a graphics demo
chosen at random. It turns off as soon as there is any
mouse or keyboard activity.
This program can lock your terminal in order to prevent
others from using it, though its default mode of operation
is merely to display pretty pictures on your screen when it
is not in use.
The benefit that this program has over the combination of
the xxxxlllloooocccckkkk(1) and xxxxaaaauuuuttttoooolllloooocccckkkk(1) programs is the ease with
which new graphics hacks can be installed. You don't need
to recompile (or even re-run) this program to add a new
display mode.
OOOOPPPPTTTTIIIIOOOONNNNSSSS
_x_s_c_r_e_e_n_s_a_v_e_r accepts the following options:
----ttttiiiimmmmeeeeoooouuuutttt _m_i_n_u_t_e_s
The screensaver will activate after the keyboard and
mouse have been idle for this many minutes.
----ccccyyyycccclllleeee _m_i_n_u_t_e_s
After the screensaver has been running for this many
minutes, the currently running sub-process will be
killed (with SSSSIIIIGGGGTTTTEEEERRRRMMMM), and a new one started. If
this is 0, then the sub-process will not be killed;
only one demo will run until the screensaver is
deactivated by user activity.
----nnnniiiicccceeee _i_n_t_e_g_e_r
The sub-processes created by _x_s_c_r_e_e_n_s_a_v_e_r will be
``niced'' to this level, so that they do not consume
cycles that are needed elsewhere.
----vvvveeeerrrrbbbboooosssseeee
Print diagnostics.
----ssssiiiilllleeeennnntttt
Page 1 (printed 6/30/95)
XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111)))) XXXX VVVVeeeerrrrssssiiiioooonnnn 11111111 ((((6666----JJJJaaaannnn----99995555)))) XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111))))
----xxxxiiiiddddlllleeee----eeeexxxxtttteeeennnnssssiiiioooonnnn
Use the XXXXIIIIDDDDLLLLEEEE server extension to decide whether the
user is idle. This is the default if _x_s_c_r_e_e_n_s_a_v_e_r
has been compiled with support for this extension.
On X11R4 or X11R5 systems, the XIdle method is
faster and more reliable than what will be done
otherwise, so use it if you can.
----nnnnoooo----xxxxiiiiddddlllleeee----eeeexxxxtttteeeennnnssssiiiioooonnnn
Don't use the XXXXIIIIDDDDLLLLEEEE server extension.
----ssssssss----eeeexxxxtttteeeennnnssssiiiioooonnnn
Use the MMMMIIIITTTT----SSSSCCCCRRRREEEEEEEENNNN----SSSSAAAAVVVVEEEERRRR server extension to decide
whether the user is idle. This is the default if
_x_s_c_r_e_e_n_s_a_v_e_r has been compiled with support for this
extension. On X11R6 systems, the MMMMIIIITTTT----SSSSCCCCRRRREEEEEEEENNNN----SSSSAAAAVVVVEEEERRRR
method is faster and more reliable than what will be
done otherwise, so use it if you can.
----nnnnoooo----ssssssss----eeeexxxxtttteeeennnnssssiiiioooonnnn
Don't use the MMMMIIIITTTT----SSSSCCCCRRRREEEEEEEENNNN----SSSSAAAAVVVVEEEERRRR server extension.
----lllloooocccckkkk Enable locking: before the screensaver will turn
off, it requires you to type the password of the
person who launched the screensaver, or the root
password. (Note: this doesn't work if the
screensaver is launched by xxxxddddmmmm(1) because it can't
know the user-id of the logged-in user.)
----nnnnoooo----lllloooocccckkkk
Disable locking. This is the default.
----lllloooocccckkkk----ttttiiiimmmmeeeeoooouuuutttt _m_i_n_u_t_e_s
This is how long after the screensaver activates
that locking is enabled. For example, if this is 5,
then any user activity within five minutes of the
time when the screensaver activated will cause the
screen to unblank without requiring a password.
After 5 minutes, a password will be required. The
default is 0, meaning that if locking is enabled,
then a password will be required as soon as the
screensaver activates.
----vvvviiiissssuuuuaaaallll _v_i_s_u_a_l
Specify which visual to use. Legal values are:
bbbbeeeesssstttt Use the visual which supports the most
writable color cells; this is the default.
ddddeeeeffffaaaauuuulllltttt Use the screen's default visual (the visual
of the root window.) This is not
necessarily the most colorful visual, which
Page 2 (printed 6/30/95)
XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111)))) XXXX VVVVeeeerrrrssssiiiioooonnnn 11111111 ((((6666----JJJJaaaannnn----99995555)))) XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111))))
is why it is not the default.
_c_l_a_s_s One of SSSSttttaaaattttiiiiccccGGGGrrrraaaayyyy, SSSSttttaaaattttiiiiccccCCCCoooolllloooorrrr, TTTTrrrruuuueeeeCCCCoooolllloooorrrr,
GGGGrrrraaaayyyySSSSccccaaaalllleeee, PPPPsssseeeeuuuuddddooooCCCCoooolllloooorrrr, or DDDDiiiirrrreeeeccccttttCCCCoooolllloooorrrr.
Selects the deepest visual of the given
class.
_n_u_m_b_e_r A number (decimal or hex) is interpreted as
a visual id number, as reported by the
xxxxddddppppyyyyiiiinnnnffffoooo(1) program; in this way you can
select a shallower visual if desired.
----nnnnoooo----iiiinnnnssssttttaaaallllllll
Use the default colormap. This is the default.
----iiiinnnnssssttttaaaallllllll
Install a private colormap while the screensaver is
on, so that the graphics hacks can get as many
colors as possible.
----ddddeeeemmmmoooo Enter the interactive demo mode immediately after
startup. Normally demo mode is invoked via the
xxxxssssccccrrrreeeeeeeennnnssssaaaavvvveeeerrrr----ccccoooommmmmmmmaaaannnndddd(1) program.
XXXX RRRREEEESSSSOOOOUUUURRRRCCCCEEEESSSS
_x_s_c_r_e_e_n_s_a_v_e_r understands the following resources:
ttttiiiimmmmeeeeoooouuuutttt (class TTTTiiiimmmmeeee)
Same as the -_t_i_m_e_o_u_t command-line option. Default
10 minutes.
ccccyyyycccclllleeee (class TTTTiiiimmmmeeee)
Same as the -_c_y_c_l_e command-line option. Default 10
minutes.
nnnniiiicccceeee (class NNNNiiiicccceeee)
Same as the -_n_i_c_e command-line option. Default 10.
vvvveeeerrrrbbbboooosssseeee (class BBBBoooooooolllleeeeaaaannnn)
Same as the -_v_e_r_b_o_s_e command-line option.
xxxxiiiiddddlllleeee (class BBBBoooooooolllleeeeaaaannnn)
Same as the -_x_i_d_l_e command-line option.
lllloooocccckkkk (class BBBBoooooooolllleeeeaaaannnn)
Same as the -_l_o_c_k command-line option.
lllloooocccckkkkTTTTiiiimmmmeeeeoooouuuutttt (class TTTTiiiimmmmeeee)
Same as the -_l_o_c_k-_t_i_m_e_o_u_t command-line option.
ffffaaaaddddeeee (class BBBBoooooooolllleeeeaaaannnn)
If this is true, then when the screensaver
Page 3 (printed 6/30/95)
XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111)))) XXXX VVVVeeeerrrrssssiiiioooonnnn 11111111 ((((6666----JJJJaaaannnn----99995555)))) XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111))))
activates, the current contents of the screen will
fade to black instead of simply winking out. This
only works on displays with writable colormaps.
Default true. A fade will also be done when
switching graphics hacks (when the _c_y_c_l_e timer
expires.)
uuuunnnnffffaaaaddddeeee (class BBBBoooooooolllleeeeaaaannnn)
If this is true, then when the screensaver
deactivates, the original contents of the screen
will fade in from black instead of appearing
immediately. This only works on displays with
writable colormaps, and if _f_a_d_e is true as well.
Default false.
ffffaaaaddddeeeeSSSSeeeeccccoooonnnnddddssss (class TTTTiiiimmmmeeee)
If _f_a_d_e is true, this is how long the fade will be
in seconds (default 1.)
ffffaaaaddddeeeeTTTTiiiicccckkkkssss (class IIIInnnntttteeeeggggeeeerrrr)
If _f_a_d_e is true, this is how many times a second the
colormap will be changed to effect a fade. Higher
numbers yield smoother fades, but may make the fades
take longer if your server isn't fast enough to keep
up. Default 75.
iiiinnnnssssttttaaaallllllllCCCCoooolllloooorrrrmmmmaaaapppp (class BBBBoooooooolllleeeeaaaannnn)
Same as the -_i_n_s_t_a_l_l command-line option. Default
false.
ppppaaaasssssssswwwwddddTTTTiiiimmmmeeeeoooouuuutttt (class TTTTiiiimmmmeeee)
If _l_o_c_k is true, this is how many seconds the
password dialog box should be left on the screen
before giving up (default 30.) This should not be
too large: the X server is grabbed for the duration
that the password dialog box is up (for security
purposes) and leaving the server grabbed for too
long can cause problems.
vvvviiiissssuuuuaaaallllIIIIDDDD (class VVVViiiissssuuuuaaaallllIIIIDDDD)
Same as the -_v_i_s_u_a_l command-line option. Default
bbbbeeeesssstttt.
ccccaaaappppttttuuuurrrreeeeSSSSttttddddeeeerrrrrrrr (class BBBBoooooooolllleeeeaaaannnn)
Whether _x_s_c_r_e_e_n_s_a_v_e_r should redirect its standard-
error stream to the window itself. Since its nature
is to take over the screen, you would not normally
see error messages generated by the screensaver or
the programs it runs; this resource will cause the
output of all relevant programs to be drawn on the
screensaver window itself instead of written to the
controlling terminal of the screensaver driver
Page 4 (printed 6/30/95)
XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111)))) XXXX VVVVeeeerrrrssssiiiioooonnnn 11111111 ((((6666----JJJJaaaannnn----99995555)))) XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111))))
process. Default: True.
ccccaaaappppttttuuuurrrreeeeSSSSttttddddoooouuuutttt (class BBBBoooooooolllleeeeaaaannnn)
Like ccccaaaappppttttuuuurrrreeeeSSSSttttddddeeeerrrrrrrr but for the standard-output
stream. Default: True.
ffffoooonnnntttt (class FFFFoooonnnntttt)
The font used for the stdout/stderr text, if
ccccaaaappppttttuuuurrrreeeeSSSSttttddddoooouuuutttt or ccccaaaappppttttuuuurrrreeeeSSSSttttddddeeeerrrrrrrr are true. Default
****----mmmmeeeeddddiiiiuuuummmm----rrrr----****----111144440000----****----mmmm----**** (a 14 point fixed-width
font.)
tttteeeexxxxttttFFFFoooorrrreeeeggggrrrroooouuuunnnndddd (class FFFFoooorrrreeeeggggrrrroooouuuunnnndddd)
The foreground color used for the stdout/stderr
text, if ccccaaaappppttttuuuurrrreeeeSSSSttttddddoooouuuutttt or ccccaaaappppttttuuuurrrreeeeSSSSttttddddeeeerrrrrrrr are true.
Default: Yellow.
tttteeeexxxxttttBBBBaaaacccckkkkggggrrrroooouuuunnnndddd (class BBBBaaaacccckkkkggggrrrroooouuuunnnndddd)
The background color used for the stdout/stderr
text, if ccccaaaappppttttuuuurrrreeeeSSSSttttddddoooouuuutttt or ccccaaaappppttttuuuurrrreeeeSSSSttttddddeeeerrrrrrrr are true.
Default: Black.
pppprrrrooooggggrrrraaaammmmssss (class PPPPrrrrooooggggrrrraaaammmmssss)
The graphics hacks which _x_s_c_r_e_e_n_s_a_v_e_r runs when the
user is idle. The value of this resource is a
string, one _s_h command per line. Each line must
contain exactly one command -- no semicolons.
When the screensaver starts up, one of these is
selected at random, and run. After the _c_y_c_l_e period
expires, it is killed, and another is selected and
run.
If the value of this resource (and the applicable
one of ccccoooolllloooorrrrPPPPrrrrooooggggrrrraaaammmmssss or mmmmoooonnnnooooPPPPrrrrooooggggrrrraaaammmmssss) is empty, then
no programs will be run; the screen will simply be
made black.
Note that you must escape the newlines; here is an
example of how you might set this in your ._X_d_e_f_a_u_l_t_s
file:
xscreensaver.programs: \
qix -root \n\
ico -r -faces -sleep 1 -obj ico \n\
xdaliclock -builtin2 -root \n\
xwave -root
To use a program as a screensaver, two things are
required: that that program draw on the root window
(or be able to be configured to draw on the root
window); and that that program understand ``virtual
Page 5 (printed 6/30/95)
XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111)))) XXXX VVVVeeeerrrrssssiiiioooonnnn 11111111 ((((6666----JJJJaaaannnn----99995555)))) XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111))))
root'' windows, as used by virtual window managers
such as _t_v_t_w_m.
It is quite easy to make programs understand virtual
roots if they don't already: you merely need to
include the file "_v_r_o_o_t._h" in them after the
standard X includes, and recompile. This file is
distributed with X11r5, and is included with
xscreensaver as well.
mmmmoooonnnnooooPPPPrrrrooooggggrrrraaaammmmssss (class MMMMoooonnnnooooPPPPrrrrooooggggrrrraaaammmmssss)
This resource is appended to the value of the
_p_r_o_g_r_a_m_s resource if the display on which the
screensaver is running is monochrome.
ccccoooolllloooorrrrPPPPrrrrooooggggrrrraaaammmmssss (class CCCCoooolllloooorrrrPPPPrrrrooooggggrrrraaaammmmssss)
This resource is appended to the value of the
_p_r_o_g_r_a_m_s resource if the display on which the
screensaver is running is not monochrome.
NNNNOOOOTTTTEEEE:::: tttthhhhiiiissss mmmmeeeeaaaannnnssss tttthhhhaaaatttt iiiiffff yyyyoooouuuu wwwwaaaannnntttt ttttoooo ccccoooommmmpppplllleeeetttteeeellllyyyy rrrreeeeppppllllaaaacccceeee
tttthhhheeee lllliiiisssstttt ooooffff pppprrrrooooggggrrrraaaammmmssss wwwwhhhhiiiicccchhhh xxxxssssccccrrrreeeeeeeennnnssssaaaavvvveeeerrrr rrrruuuunnnnssss,,,, yyyyoooouuuu mmmmuuuusssstttt
sssseeeetttt aaaatttt lllleeeeaaaasssstttt _t_w_o,,,, ppppoooossssssssiiiibbbbllllyyyy _t_h_r_e_e rrrreeeessssoooouuuurrrrcccceeeessss.... IIIItttt iiiissss nnnnooootttt
eeeennnnoooouuuugggghhhh ttttoooo jjjjuuuusssstttt sssseeeetttt tttthhhheeee pppprrrrooooggggrrrraaaammmmssss rrrreeeessssoooouuuurrrrcccceeee -------- yyyyoooouuuu mmmmuuuusssstttt
aaaallllssssoooo sssseeeetttt ccccoooolllloooorrrrPPPPrrrrooooggggrrrraaaammmmssss oooorrrr mmmmoooonnnnooooPPPPrrrrooooggggrrrraaaammmmssss oooorrrr bbbbooootttthhhh....
Normally you won't need to change the following resources:
bbbboooouuuurrrrnnnneeeeSSSShhhheeeellllllll (class BBBBoooouuuurrrrnnnneeeeSSSShhhheeeellllllll)
The pathname of the shell that _x_s_c_r_e_e_n_s_a_v_e_r uses to
start subprocesses. This must be whatever your
local variant of ////bbbbiiiinnnn////sssshhhh is -- in particular, it
must not be ccccsssshhhh.
wwwwiiiinnnnddddoooowwwwCCCCrrrreeeeaaaattttiiiioooonnnnTTTTiiiimmmmeeeeoooouuuutttt (class TTTTiiiimmmmeeee)
When _X_I_d_l_e is not in use, this controls the delay
between when windows are created and when
_x_s_c_r_e_e_n_s_a_v_e_r selects events on them. Default 30
seconds.
ppppooooiiiinnnntttteeeerrrrPPPPoooollllllllTTTTiiiimmmmeeee (class TTTTiiiimmmmeeee)
When _X_I_d_l_e is not in use, this controls how
frequently _x_s_c_r_e_e_n_s_a_v_e_r checks to see if the mouse
position or buttons have changed. Default 5
seconds.
iiiinnnniiiittttiiiiaaaallllDDDDeeeellllaaaayyyy (class TTTTiiiimmmmeeee)
When _X_I_d_l_e is not in use, _x_s_c_r_e_e_n_s_a_v_e_r will wait
this many seconds before selecting events on
existing windows, under the assumption that
_x_s_c_r_e_e_n_s_a_v_e_r is started during your login procedure,
and the window state may be in flux. Default 30
Page 6 (printed 6/30/95)
XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111)))) XXXX VVVVeeeerrrrssssiiiioooonnnn 11111111 ((((6666----JJJJaaaannnn----99995555)))) XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111))))
seconds.
HHHHOOOOWWWW IIIITTTT WWWWOOOORRRRKKKKSSSS
When it is time to activate the screensaver, a full-screen
black window is created. This window is given the
appropriate properties so that, to any subsequently-created
programs, it will appear to be a ``virtual root'' window.
Because of this, any program which draws on the root window
(and which understands virtual roots) can be used as a
screensaver.
When the user becomes active again, the screensaver window
is unmapped and the running subprocess is killed by sending
it SSSSIIIIGGGGTTTTEEEERRRRMMMM. This is also how the subprocesses are killed
when the screensaver decides that it's time to run a
different demo: the old one is killed and a new one is
launched.
Before launching a subprocess, _x_s_c_r_e_e_n_s_a_v_e_r stores an
appropriate value for $$$$DDDDIIIISSSSPPPPLLLLAAAAYYYY in the environment that the
child will recieve. (This is so that if you start
_x_s_c_r_e_e_n_s_a_v_e_r with a -_d_i_s_p_l_a_y argument, the programs which
_x_s_c_r_e_e_n_s_a_v_e_r launches will draw on the same display.)
When the screensaver turns off, or is killed, care is taken
to restore the ``real'' virtual root window if there is one.
Because of this, it is important that you not kill the
screensaver process with _k_i_l_l -_9 if you are running a
virtual-root window manager. If you kill it with -9, you
may need to restart your window manager to repair the
damage. This isn't an issue if you aren't running a
virtual-root window manager.
For all the gory details, see the commentary at the top of
xscreensaver.c.
You can control a running screensaver process by using the
xxxxssssccccrrrreeeeeeeennnnssssaaaavvvveeeerrrr----ccccoooommmmmmmmaaaannnndddd(1) program (which see.)
EEEENNNNVVVVIIIIRRRROOOONNNNMMMMEEEENNNNTTTT
DDDDIIIISSSSPPPPLLLLAAAAYYYY to get the default host and display number.
XXXXEEEENNNNVVVVIIIIRRRROOOONNNNMMMMEEEENNNNTTTT
to get the name of a resource file that overrides
the global resources stored in the RESOURCE_MANAGER
property.
UUUUSSSSIIIINNNNGGGG XXXXDDDDMMMM((((1111))))
You can run _x_s_c_r_e_e_n_s_a_v_e_r from your xdm session, so that the
screensaver will run even when nobody is logged in on the
console. Simply add """"xxxxssssccccrrrreeeeeeeennnnssssaaaavvvveeeerrrr &&&&"""" to your
/_u_s_r/_l_i_b/_X_1_1/_x_d_m/_X_s_e_t_u_p file. Because _x_d_m grabs the
Page 7 (printed 6/30/95)
XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111)))) XXXX VVVVeeeerrrrssssiiiioooonnnn 11111111 ((((6666----JJJJaaaannnn----99995555)))) XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111))))
keyboard, keypresses will not make the screensaver
deactivate, but any mouse activity will.
Users may want to add """"xxxxssssccccrrrreeeeeeeennnnssssaaaavvvveeeerrrr----ccccoooommmmmmmmaaaannnndddd ----rrrreeeessssttttaaaarrrrtttt"""" to
their startup scripts, so that the screensaver will be
reinitialized with their private resource settings when they
log in.
It is safe to run this program as root (as _x_d_m is likely to
do.) If run as root, _x_s_c_r_e_e_n_s_a_v_e_r changes its effective
user and group ids to something safe (like "_n_o_b_o_d_y") before
connecting to the X server or launching user-specified
programs.
Locking doesn't work if the screensaver is launched by _x_d_m.
To get around this, you can run the screensaver from _x_d_m
without locking, and kill and restart it from your personal
X startup script to enable locking.
DDDDEEEEMMMMOOOO MMMMOOOODDDDEEEE
If _x_s_c_r_e_e_n_s_a_v_e_r receives the DDDDEEEEMMMMOOOO ClientMessage, it pops up
a dialog box from which you can examine and experiment with
the screensaver's client programs.
Clicking left on an element in the scrolling list will place
the indicated program and its args in the text field to be
edited. Edit the arguments and hit return to run the
program with the parameters you have specified.
Double-clicking on an element in the scrolling list will run
the indicated program immediately.
When a client program is launched, the dialog box is hidden.
Clicking any mouse button will re-expose the dialog box (but
will not kill the client program.)
RRRRuuuunnnn NNNNeeeexxxxtttt
Clicking this button will run the next program in
the list after the currently-selected one, and will
scroll around to the top when it reaches the bottom.
RRRRuuuunnnn PPPPrrrreeeevvvviiiioooouuuussss
Opposite of Run Next; at the top, it scrolls around
to the bottom.
EEEEddddiiiitttt PPPPaaaarrrraaaammmmeeeetttteeeerrrrssss
This pops up a second dialog box, in which you have
the option to interactively change most of the
screensaver's operational parameters, such as its
timeouts, and whether it should hack colormaps.
Changing these parameters here will affect only the
running _x_s_c_r_e_e_n_s_a_v_e_r process; to make the changes
Page 8 (printed 6/30/95)
XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111)))) XXXX VVVVeeeerrrrssssiiiioooonnnn 11111111 ((((6666----JJJJaaaannnn----99995555)))) XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111))))
permanent, you need to edit your X resource file.
EEEExxxxiiiitttt DDDDeeeemmmmoooo MMMMooooddddeeee
Returns to normal screensaver operation.
RRRReeeeiiiinnnniiiittttiiiiaaaalllliiiizzzzeeee
Causes the screensaver process to exit and then
restart with the same command-line arguments. This
causes the X resource database to be re-read. This
is just like the -_r_e_s_t_a_r_t argument to
xxxxssssccccrrrreeeeeeeennnnssssaaaavvvveeeerrrr----ccccoooommmmmmmmaaaannnndddd(1) except that when executed
from this button, the screensaver will automatically
return to demo mode after restarting.
SSSSEEEEEEEE AAAALLLLSSSSOOOO
XXXX(1), xxxxssssccccrrrreeeeeeeennnnssssaaaavvvveeeerrrr----ccccoooommmmmmmmaaaannnndddd(1), xxxxlllloooocccckkkk(1), xxxxnnnnlllloooocccckkkk(1),
xxxxaaaauuuuttttoooolllloooocccckkkk(1), xxxxddddmmmm(1), qqqqiiiixxxx(1), ppppyyyyrrrroooo(1), hhhheeeelllliiiixxxx(1),
rrrroooorrrrsssscccchhhhaaaacccchhhh(1), hhhhooooppppaaaalllloooonnnngggg(1), aaaattttttttrrrraaaaccccttttiiiioooonnnn(1), ggggrrrreeeeyyyynnnneeeettttiiiicccc(1),
rrrroooocccckkkkssss(1), nnnnoooosssseeeegggguuuuyyyy(1), bbbblllliiiittttssssppppiiiinnnn(1), iiiimmmmssssmmmmaaaapppp(1),
sssslllliiiiddddeeeessssccccrrrreeeeeeeennnn(1), ddddeeeeccccaaaayyyyssssccccrrrreeeeeeeennnn(1), hhhhyyyyppppeeeerrrrccccuuuubbbbeeee(1), ffffllllaaaammmmeeee(1),
mmmmaaaazzzzeeee(1), iiiiccccoooo(1), xxxxddddaaaalllliiiicccclllloooocccckkkk(1), xxxxbbbboooouuuunnnncccceeeebbbbiiiittttssss(1), xxxxsssswwwwaaaarrrrmmmm(1),
xxxxwwwwaaaavvvveeee(1), xxxxffffiiiisssshhhhttttaaaannnnkkkk(1)
BBBBUUUUGGGGSSSS
If you think you have changed the pppprrrrooooggggrrrraaaammmmssss resource but the
screensaver is ignoring it, you are confused -- you need to
set the ccccoooolllloooorrrrPPPPrrrrooooggggrrrraaaammmmssss and/or mmmmoooonnnnooooPPPPrrrrooooggggrrrraaaammmmssss resources as well.
(This is not a bug, but I mention it here because people
think that it is with great regularity.)
If you are not making use of one of the server extensions
(XXXXIIIIDDDDLLLLEEEE or MMMMIIIITTTT----SSSSCCCCRRRREEEEEEEENNNN----SSSSAAAAVVVVEEEERRRR), then it is possible, in rare
situations, for _x_s_c_r_e_e_n_s_a_v_e_r to interfere with event
propagation and make another X program malfunction. For
this to occur, that other application would need to _n_o_t
select KKKKeeeeyyyyPPPPrrrreeeessssssss events on its non-leaf windows within the
first 30 seconds of their existence, but then select for
them later. In this case, that client _m_i_g_h_t fail to receive
those events. This isn't very likely, since programs
generally select a constant set of events immediately after
creating their windows and then don't change them, but this
is the reason that it's a good idea to install and use one
of the server extensions instead, to work around this
shortcoming in the X protocol.
Although this program ``nices'' the subprocesses that it
starts, graphics-intensive subprograms can still overload
the machine by causing the X server process itself (which is
not ``niced'') to suck a lot of cycles. Care should be
taken to slow down programs intended for use as screensavers
by inserting strategic calls to sssslllleeeeeeeepppp(3) or uuuusssslllleeeeeeeepppp(3)
Page 9 (printed 6/30/95)
XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111)))) XXXX VVVVeeeerrrrssssiiiioooonnnn 11111111 ((((6666----JJJJaaaannnn----99995555)))) XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111))))
Also, it will cause your X server to be pretty much
permanently swapped in. (but the same is true of any
program that draws periodically, like xclock or xload.)
If the subprocess is drawing too quickly and the connection
to the X server is a slow one (such as an X terminal running
over a phone line) then the screensaver might not turn off
right away when the user becomes active again (the iiiiccccoooo(1)
demo has this problem if being run in full-speed mode).
This can be alleviated by inserting strategic calls to
XXXXSSSSyyyynnnncccc(3) in code intended for use as a screensaver. This
prevents too much graphics activity from being buffered up.
The screensaver only runs on the default screen of the
display. If you have more than one screen, you can run
multiple screensaver processes, one for each screen. This
interacts poorly with locking. In an ideal world, the
screensaver would save (and lock) both screens
simultaniously, and any activity would restore both screens.
It would be nice if one could run different hacks on each
screen simultaniously. However, I don't have access to a
multi-headed workstation, so it would be hard for me to
implement something like this.
If you don't have Motif, you can't compile with support for
locking or demo mode.
Locking doesn't work if the screensaver is launched by _x_d_m.
The reason for this is that when it is launched by _x_d_m, the
screensaver process is owned by some standard user id (such
as _r_o_o_t or _d_a_e_m_o_n) instead of the user who is logged in on
the console. In order for the screensaver to prompt for the
password of the person who had logged in from _x_d_m, it would
need to know who that user was, and there is no reliable and
safe way to figure that out. (And even if there was, there
would be some other security issues here as well.)
So if you want to use it as a locker, you must start it with
your user id. If it has already been started by _x_d_m, you
can kill it with xxxxssssccccrrrreeeeeeeennnnssssaaaavvvveeeerrrr----ccccoooommmmmmmmaaaannnndddd ----eeeexxxxiiiitttt, and then start
it again as you.
If you get an error message like ``couldn't get password of
foo'' then this probably means that you're on a system in
which the ggggeeeettttppppwwwweeeennnntttt(3) library routine can only be
effectively used by root. If this is the case, then
_x_s_c_r_e_e_n_s_a_v_e_r must be installed as setuid to root. Care has
been taken to make this a safe thing to do.
The iiiinnnnssssttttaaaallllllllCCCCoooolllloooorrrrmmmmaaaapppp option doesn't work very well with the
ttttwwwwmmmm(1) window manager and its descendants. There is a race
condition between the screensaver and this window manager,
Page 10 (printed 6/30/95)
XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111)))) XXXX VVVVeeeerrrrssssiiiioooonnnn 11111111 ((((6666----JJJJaaaannnn----99995555)))) XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111))))
which can result in the screensaver's colormap not getting
installed properly, meaning the graphics hacks will appear
in essentially random colors. The mmmmwwwwmmmm(1) and oooollllwwwwmmmm(1) window
managers don't seem to have this problem. The race
condition exists because X apparently does not provide a way
for an OverrideRedirect window to have its own colormap,
short of grabbing the server (which is neither a good idea,
nor really possible with the current design.) What happens
is that, as soon as the screensaver installs its colormap,
ttttwwwwmmmm responds to the CCCCoooolllloooorrrrmmmmaaaappppNNNNoooottttiiiiffffyyyy event that is generated
by re-instaling the default colormap. Apparently, ttttwwwwmmmm
doesn't _a_l_w_a_y_s do this; it seems to do it regularly if the
screensaver is activated from a menu item, but seems to not
do it if the screensaver comes on of its own volition, or is
activated from another console. Any thoughts on this
problem are welcome...
Apparently there are some problems with ``XView'' programs
getting confused and thinking that the screensaver window is
the real root window even when the screensaver is not
active: ClientMessages intended for the window manager are
sent to the screensaver window instead. This could be
solved by making xscreensaver forward all unrecognised
ClientMessages to the real root window, but there may be
other problems as well.
When using the MMMMIIIITTTT----SSSSCCCCRRRREEEEEEEENNNN----SSSSAAAAVVVVEEEERRRR extension in conjunction
with the ffffaaaaddddeeee option, you may notice an unattractive flicker
just before the fade begins. This is because the server
maps a black window just before it tells the _x_s_c_r_e_e_n_s_a_v_e_r
process to activate. The _x_s_c_r_e_e_n_s_a_v_e_r process immediately
unmaps that window, but this results in a flicker. I
haven't figured out how to get around this yet.
There need to be a lot more graphics hacks. In particular,
there should be a simulation of a Lavalite (tm).
CCCCOOOOPPPPYYYYRRRRIIIIGGGGHHHHTTTT
Copyright c 1992, 1993, 1994, 1995 by Jamie Zawinski.
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby
granted without fee, provided that the above copyright
notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting
documentation. No representations are made about the
suitability of this software for any purpose. It is
provided "as is" without express or implied warranty.
AAAAUUUUTTTTHHHHOOOORRRR
Jamie Zawinski <jwz@mcom.com>, 13-aug-92. Please let me
know if you find any bugs or make any improvements.
Page 11 (printed 6/30/95)
XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111)))) XXXX VVVVeeeerrrrssssiiiioooonnnn 11111111 ((((6666----JJJJaaaannnn----99995555)))) XXXXSSSSccccrrrreeeeeeeennnnSSSSaaaavvvveeeerrrr((((1111))))
Thanks to David Wojtowicz for implementing _l_o_c_k_T_i_m_e_o_u_t.
Thanks to Martin Kraemer for adding support for shadow
passwords and locking-disabled diagnostics.
Page 12 (printed 6/30/95)